// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.patent.service;

import com.liuxinlong.modules.entity.PatentRisk;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 风险管控信息接口
 * 
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2023-10-07
 *
 */
public interface PatentRiskService {
	/**
	 * 分页查询专利项目信息
	 *
	 * @param queryParam 请求信息
	 * @return 专利项目信息列表
	 */
	List<Map<String, Object>> pagePatentProjectInfo(Map<String, Object> queryParam);

	/**
	 * 统计专利项目数量
	 *
	 * @param queryParam 查询参数
	 * @return 专利项目数量
	 */
	int countPatentProject(Map<String, Object> queryParam);

	/**
	 * 分页查询专利风险点信息
	 *
	 * @param queryParam 请求信息
	 * @return 专利风险点信息列表
	 */
	List<Map<String, Object>> pagePatentRiskInfo(Map<String, Object> queryParam);

	/**
	 * 统计专利风险点数量
	 *
	 * @param queryParam 查询参数
	 * @return 专利风险点数量
	 */
	int countPatentRisk(Map<String, Object> queryParam);

	/**
	 * 新增风险管控信息
	 *
	 * @param patentRisk 风险管控信息
	 */
	void addPatentRiskInfo(PatentRisk patentRisk);

	/**
	 * 更新风险管控信息
	 *
	 * @param patentRisk 风险管控信息
	 */
	void updatePatentRiskInfo(PatentRisk patentRisk);

	/**
	 * 删除风险管控信息
	 *
	 * @param id 风险管控id
	 */
	void deletePatentRiskInfo(String id);

	/**
	 * 更新风险管控状态信息
	 *
	 * @param id 风险管控id
	 *           @param type 类型
	 *                     @param targetStatus 目标状态
	 */
	void updatePatentRiskStatus(String id,int type,int targetStatus);

	/**
	 * 项目风险管控流程发起
	 *
	 */
	void startPatentRiskProcess(String id,int type,String dataString,List<Map<String,Object>> changeList);

	/**
	 * 设计差异点检索式导入
	 *
	 * @param id id
	 * @param fileId 文件id
	 */
	void updateRiskSearchRecord(String id,String fileId);

	/**
	 * 修改项目协助人
	 *
	 * @param id 项目id
	 * @param assistId 项目协助人id
	 */
	void updateProjectAssist(String id,String assistId);

	/**
	 * 专利风险管控数据详情查询
	 *
	 * @param id id
	 * @return 专利风险管控数据详情
	 */
	Map<String,Object> queryProjectCompleteReport(String id);

	/**
	 * 导出风险管控数据详情信息
	 *
	 * @param id    查询条件
	 * @param response response
	 */
	void exportProjectCompleteReport(String id, HttpServletResponse response);
}

